#ifndef CHECKINGACCOUNT_HH
#define CHECKINGACCOUNT_HH

#include "Account.hh"
#include "Bank.hh"

class CheckingAccount : public Account {
private:
    Bank* bank; // Pointer to the bank object
public:
    CheckingAccount();
    CheckingAccount(const std::string& id, double initialBalance, const std::string& owner, Bank* bank);
    ~CheckingAccount() ;
    CheckingAccount(const CheckingAccount& other); ;
    CheckingAccount& operator=(const CheckingAccount& other) ;

    void deposit(double amount, const std::string& note = "") override;
    void withdraw(double amount, const std::string& note = "") override;
    void transfer(Account* to, double amount, const std::string& note = "") override;
    void accessAccount() override;
    void setBank(Bank* bank) override;// Setter for bank
};
#endif // CHECKINGACCOUNT_HH